# -*- coding:utf-8 -*-
# @FileName : app\models\history.py
# @Time     : 2025/11/28
# @Author   : 天空之城
"""历史记录模型文件

此模块定义历史记录模型，使用SQLAlchemy进行ORM映射。
"""
from app.extensions import db


class History(db.Model):
    """历史记录模型
    
    定义历史记录表结构，包含历史记录的基本信息。
    """
    __tablename__ = 'histories'
    
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)  # 历史记录ID
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)  # 所属用户ID
    title = db.Column(db.String(100), nullable=False)  # 任务标题
    description = db.Column(db.Text, nullable=False)  # 任务描述
    status = db.Column(db.String(20), nullable=False)  # 任务状态：completed-已完成，pending-执行中，failed-失败，replay-回放
    type = db.Column(db.String(20), nullable=False, default='normal')  # 任务类型：normal-普通任务，replay-回放任务
    timestamp = db.Column(db.DateTime, default=db.func.current_timestamp())  # 创建时间
    can_replay = db.Column(db.Boolean, default=False)  # 是否可以回放
    
    # 关系
    user = db.relationship('User', backref=db.backref('histories', lazy=True))  # 关联的用户
    
    def __repr__(self):
        """返回历史记录对象的字符串表示"""
        return f'<History {self.id} - {self.title}>'

    def to_dict(self):
        """将历史记录对象转换为字典格式
        
        Returns:
            dict: 历史记录的字典表示，包含所有必要的字段
        """
        return {
            'id': self.id,
            'title': self.title,
            'description': self.description,
            'status': self.status,
            'type': self.type,
            'timestamp': self.timestamp.strftime('%Y-%m-%d %H:%M:%S'),
            'canReplay': self.can_replay
        }